package com.skh.string;

/**
 * 学生出勤记录
 * created by skh on 2018/9/7
 */
public class StudentAttendanceRecord1 {

	/*
	给定一个字符串来代表一个学生的出勤纪录，这个纪录仅包含以下三个字符：

	'A' : Absent，缺勤
	'L' : Late，迟到
	'P' : Present，到场
	如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。

	你需要根据这个学生的出勤纪录判断他是否会被奖赏。

	示例 1:

	输入: "PPALLP"
	输出: True
	示例 2:

	输入: "PPALLL"
	输出: False
	 */

	public boolean checkRecord1(String s) {
		//简便思路
		return s.indexOf("A") == s.lastIndexOf("A") && s.indexOf("LLL") == -1;

	}

	public boolean checkRecord(String s) {
		if (noMoreThanOneA(s) && noMoreThanTwoConsecutiveL(s)) {
			return true;
		}
		return false;
	}

	//检查是否不超过一个A
	private Boolean noMoreThanOneA(String s) {
		char[] chars = s.toCharArray();
		int count =0;
		for (char aChar : chars) {
			if (aChar == 'A') {
				count++;
			}
		}

		if (count <= 1) {
			return true;
		}

		return false;
	}

	//检查不超过两个连续的'L'
	private Boolean noMoreThanTwoConsecutiveL(String s) {
		char[] chars = s.toCharArray();
		int count =0;
		int maxCount = 0;
		for (int i=0;i<s.length();i++) {
			if (chars[i] == 'L') {
				count++;
			}else {
				if (count > maxCount) {
					maxCount=count;
				}
				count=0;
			}
		}

		if (count > maxCount) {
			maxCount=count;
		}

		if (maxCount <= 2) {
			return true;
		}
		return false;
	}

	public static void main(String[] args) {
		StudentAttendanceRecord1 studentAttendanceRecord1 = new StudentAttendanceRecord1();
		boolean b = studentAttendanceRecord1.checkRecord("PPLLLPPPPL");
		System.out.println("b = " + b);

		String s = "PPLLLPPPPL";
		int i = s.indexOf("LLLL");
		System.out.println("i = " + i);


	}


}
